package com.whty.module.service;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.whty.module.mapper.ProductMapper;
import com.whty.module.domain.Product;
import com.whty.module.service.IProductService;
import com.whty.common.support.Convert;
import com.whty.mariotools.DateUtil;

/**
 * 产品 服务层实现
 * 
 * @author mario
 * @date 2018-10-31
 */
@Service
public class ProductServiceImpl implements IProductService 
{
	@Autowired
	private ProductMapper productMapper;

	/**
     * 查询产品信息
     * 
     * @param id 产品ID
     * @return 产品信息
     */
    @Override
	public Product selectProductById(Long id)
	{
	    return productMapper.selectProductById(id);
	}
	
	/**
     * 查询产品列表
     * 
     * @param product 产品信息
     * @return 产品集合
     */
	@Override
	public List<Product> selectProductList(Product product)
	{
	    return productMapper.selectProductList(product);
	}
	
	/**
     * 新增产品
     * 
     * @param product 产品信息
     * @return 结果
     * 待优化部分 ，取出茶厂编码+产品类型 的 当前最大流水的数据  like ，截取其后六位+1 作为起始数据
     */
	@Override
	public int insertProduct(Product product)
	{
		int tempExistCode=0;
		Integer insertCount = 0;
		product.setUpdateTime(new Date());
		product.setStatus("00");
		for(int i=1; i<=product.getAmount(); i++) {
			//厂商编号(6)+产品类型(4)+流水号(10)
			String tempProductCode="";
			int lastNo=0;
			try{
				
				lastNo = i;
				//existProduct 判断当前数据库中是否已存在 该茶厂+产品类型+当天 的 溯源码
			 String existProduct=product.getGardenNo()+"00"+product.getProductType()+DateUtil.getGHShortDate();
			 List<Product> listemp = productMapper.selectProductByLikeProduct(existProduct+"%");
			 if(listemp!=null&&listemp.size()>0){
				 if(tempExistCode!=0){
					 String tempCode=listemp.get(0).getProductCode();
					 tempCode=tempCode.substring(tempCode.length()-7, tempCode.length()-1);
					 tempExistCode = Integer.parseInt(tempCode); 
				 }

//				 lastNo=lastNo+Integer.parseInt(tempCode);
			 }
			 lastNo=lastNo+tempExistCode;
			 tempProductCode=product.getGardenNo()+"00"+product.getProductType()+DateUtil.getGHShortDate()+autoGenericCode(lastNo,6);
					
			}catch(Exception e){
				e.printStackTrace();
			}
		    product.setProductCode(tempProductCode);
			productMapper.insertProduct(product);
			insertCount = insertCount + 1;
		}
	    return insertCount;
	}

	
	/**
     * 不够位数的在前面补0，保留num的长度位数字
     * @param code
     * @return
     */
    private String autoGenericCode(int code, int num) {
        String result = "";
        // 保留num的位数
// 0 代表前面补充0     
        // num 代表长度为4     
        // d 代表参数为正数型 
        result = String.format("%0" + num + "d", code);

        return result;
    }
	
	/**
     * 修改产品
     * 
     * @param product 产品信息
     * @return 结果
     */
	@Override
	public int updateProduct(Product product)
	{
		if(product!=null){
			product.setUpdateTime(new Date());
		}
	    return productMapper.updateProduct(product);
	}

	/**
     * 删除产品对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	@Override
	public int deleteProductByIds(String ids)
	{
		return productMapper.deleteProductByIds(Convert.toStrArray(ids));
	}
	
}
